import request from '@/config/axios'
import type { Dayjs } from 'dayjs';

/** 学生信息信息 */
export interface Student {
          studentId: number; // 学生ID
          studentNo?: string; // 学号
          name?: string; // 姓名
          gender?: number; // 性别（1男 2女）
          idCard: string; // 身份证号
          phone: string; // 手机号
          email: string; // 邮箱
          classId?: number; // 所属班级ID
          majorId?: number; // 所属专业ID
          enrollmentDate?: string | Dayjs; // 入学日期
          enrollmentTermId?: number; // 入学学期ID
          graduationDate: string | Dayjs; // 毕业日期
          currentSemester: number; // 当前学期数
          totalCredits: number; // 已获得学分
          gpa: number; // 平均绩点
          guardianName: string; // 监护人姓名
          guardianPhone: string; // 监护人电话
          address: string; // 家庭地址
          status?: number; // 状态（0在读 1毕业 2退学 3休学 4转学）
  }

// 学生信息 API
export const StudentApi = {
  // 查询学生信息分页
  getStudentPage: async (params: any) => {
    return await request.get({ url: `/ao/student/page`, params })
  },

  // 查询学生信息详情
  getStudent: async (id: number) => {
    return await request.get({ url: `/ao/student/get?id=` + id })
  },

  // 新增学生信息
  createStudent: async (data: Student) => {
    return await request.post({ url: `/ao/student/create`, data })
  },

  // 修改学生信息
  updateStudent: async (data: Student) => {
    return await request.put({ url: `/ao/student/update`, data })
  },

  // 删除学生信息
  deleteStudent: async (id: number) => {
    return await request.delete({ url: `/ao/student/delete?id=` + id })
  },

  /** 批量删除学生信息 */
  deleteStudentList: async (ids: number[]) => {
    return await request.delete({ url: `/ao/student/delete-list?ids=${ids.join(',')}` })
  },

  // 导出学生信息 Excel
  exportStudent: async (params) => {
    return await request.download({ url: `/ao/student/export-excel`, params })
  },

  // 获得导入学生信息模板
  importStudentTemplate: async () => {
    return await request.download({ url: `/ao/student/get-import-template` })
  },

  // 导入学生信息
  importStudent: async (data: FormData) => {
    return await request.upload({ url: `/ao/student/import`, data })
  },
}
